﻿namespace Lab1.Classes
{
    /// <summary>
    /// Класс для оптимистической обработки
    /// 
    /// GVT – это нижняя граница временной отметки любого будущего отката. 
    /// GVT вычисляется с учётом откатов, вызванных сообщениями, поступивших «в прошлом». 
    /// Таким образом, наименьшая временная метка среди необработанных и частично обработанных сообщений и есть GVT. 
    /// После того, как значение GVT вычислено, фиксируются операции ввода вывода, выполненные в модельное время, превышающее GVT, 
    /// а память восстанавливается (за исключением одного состояния для каждого из логических процессов).
    /// 
    /// Вычисление GVT очень похоже на вычисление LBTS в консер-вативных алгоритмах. 
    /// Это происходит потому, что откаты вызваны сообщениями или антисообщениями в прошлом логического процесса. 
    /// Следовательно. GVT – это нижняя граница временной метки будущих сообщений (или антисообщений), которые могут быть получены поз-же.
    /// </summary>
    public class EngineGVT : IEngine
    {
        public Shop Shop { get; private set; }
        public Bank Bank { get; private set; }
        public Customer Customer { get; private set; }

        public EngineGVT()
        {
            Shop = new Shop(this);
            Bank = new Bank(this);
            Customer = new Customer(this);
        }
    }
}
